{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "引入必要的包并设置随机数种子"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "755828608882a76e"
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "outputs": [],
   "source": [
    "# 引入必要的包\n",
    "import numpy as np   # 引入矩阵计算包numpy\n",
    "import os   # 与操作系统交互的包\n",
    "# 在jupyter notebook中使用单元格显示图片，而不是独立的展示图片\n",
    "%matplotlib inline\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt   # 引入绘图包\n",
    "import warnings   # 引入警告包\n",
    "warnings.filterwarnings('ignore')   # 忽略警告信息\n",
    "np.random.seed(42)   # 设置随机数种子"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:18.089163800Z",
     "start_time": "2024-04-12T06:15:18.063727400Z"
    }
   },
   "id": "5bfe0e9374e94731"
  },
  {
   "cell_type": "markdown",
   "source": [
    "获取数据集,处理数据集，并对数据集进行洗牌操作"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "965cbbb4da79c4f3"
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "aadb57afd61ca057",
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:20.918987700Z",
     "start_time": "2024-04-12T06:15:18.072695600Z"
    }
   },
   "outputs": [],
   "source": [
    "# 获取数据集\n",
    "from sklearn import datasets   # 引入数据集包\n",
    "mnist = datasets.fetch_openml('mnist_784')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "f8f041ac-7331-4da4-9a71-f4c348accc1c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:20.950880200Z",
     "start_time": "2024-04-12T06:15:20.919983600Z"
    }
   },
   "outputs": [],
   "source": [
    "# 从数据集中获取的图像信息,划分为训练集(6000)和测试集(即以后)\n",
    "x, y = mnist[\"data\"], mnist[\"target\"]\n",
    "x_train = x[:60000]\n",
    "y_train = y[:60000]\n",
    "x_test = x[60000:]\n",
    "y_test = y[60000:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "16469cdd-6b1e-4bca-aeee-75f13ad39162",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:21.122343300Z",
     "start_time": "2024-04-12T06:15:20.952877600Z"
    }
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "# 洗牌操作，打乱数据集，以获得数据的独立性\n",
    "shuffle_index = np.random.permutation(60000)   # 随机打乱训练集\n",
    "x_train = x_train.iloc[shuffle_index]   # 打乱训练集\n",
    "y_train = y_train[shuffle_index]   "
   ]
  },
  {
   "cell_type": "markdown",
   "source": [
    "交叉验证-代码实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "abd0165a301b3864"
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "outputs": [
    {
     "data": {
      "text/plain": "array([ True])"
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# y的训练值，等于5为ture，其他为false\n",
    "y_train_5 = (y_train==\"5\")\n",
    "# 导入线性回归的SGD分类器\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "classifier = SGDClassifier(random_state=42,max_iter=7)\n",
    "classifier.fit(x_train, y_train_5)   # 训练模型\n",
    "classifier.predict([x.iloc[3500]])   # 预测模型"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:21.641208100Z",
     "start_time": "2024-04-12T06:15:21.123340700Z"
    }
   },
   "id": "2e62e4a3a5301efb"
  },
  {
   "cell_type": "markdown",
   "source": [
    "交叉验证-使用sklearn包实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "74b6739442e17f49"
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "交叉验证的准确率： [0.96875 0.9659  0.9577 ]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score   # 引入交叉验证包\n",
    "scores = cross_val_score(classifier, x_train, y_train_5, cv=3, scoring=\"accuracy\")   # 交叉验证模型\n",
    "print(\"交叉验证的准确率：\",scores)   # 输出交叉验证的准确率"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:23.151215600Z",
     "start_time": "2024-04-12T06:15:21.642206400Z"
    }
   },
   "id": "34e725160aef4916"
  },
  {
   "cell_type": "markdown",
   "source": [
    "交叉验证-自定义方法实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "ce8573b2cbf83979"
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "交叉验证的准确率： 0.9566666666666667\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import StratifiedKFold   # 引入分层抽样包\n",
    "from sklearn.base import clone   # 引入克隆包\n",
    "skfolds = StratifiedKFold(n_splits=3 , shuffle=True, random_state=42)   # 定义分层抽样器\n",
    "res= skfolds.split(x_train, y_train_5)\n",
    "accuracy_list=[]   # 定义准确率列表\n",
    "for i, (train_index, test_index) in enumerate(res) :\n",
    "    clone_clf = clone(SGDClassifier(random_state=42,max_iter=7))   # 克隆分类器\n",
    "    x_train_folds = x_train.iloc[train_index]   # 训练集\n",
    "    y_train_folds = y_train_5.iloc[train_index]   # 训练集的标签\n",
    "    x_test_fold = x_train.iloc[test_index]   # 测试集\n",
    "    y_test_fold = y_train_5.iloc[test_index]   # 测试集的标签\n",
    "    clone_clf.fit(x_train_folds, y_train_folds)   # 训练模型\n",
    "    y_pred = clone_clf.predict(x_test_fold)   # 预测模型\n",
    "    accuracy = np.sum(y_pred == y_test_fold) / len(y_test_fold)   # 计算准确率\n",
    "    accuracy_list.append(accuracy)   # 加入准确率列表\n",
    "print(\"交叉验证的准确率：\",np.mean(accuracy_list))   # 输出交叉验证的准确率\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:25.003908200Z",
     "start_time": "2024-04-12T06:15:23.151215600Z"
    }
   },
   "id": "149a8eaac00edca4"
  },
  {
   "cell_type": "markdown",
   "source": [
    "混淆矩阵-代码实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "cc53356af792ad3c"
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[53564,  1015],\n       [ 1138,  4283]], dtype=int64)"
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_predict   # 引入交叉预测包\n",
    "y_train_pred = cross_val_predict(SGDClassifier(random_state=42,max_iter=7), x_train, y_train_5, cv=3)   # 交叉预测模型\n",
    "from sklearn.metrics import confusion_matrix   # 引入混淆矩阵包\n",
    "confusion_matrix(y_train_5, y_train_pred)   # 输出混淆矩阵\n"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:26.613641Z",
     "start_time": "2024-04-12T06:15:25.005902Z"
    }
   },
   "id": "cec108f6c0fff4c9"
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精确率： 0.8084182710456776\n",
      "召回率： 0.7900756318022505\n",
      "F1值： 0.7991417109805019\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score, f1_score   # 引入评价指标包\n",
    "print(\"精确率：\",precision_score(y_train_5, y_train_pred))     # 输出精确率\n",
    "print(\"召回率：\",recall_score(y_train_5, y_train_pred))     # 输出召回率\n",
    "print(\"F1值：\",f1_score(y_train_5, y_train_pred))     # 输出F1值"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:26.655503800Z",
     "start_time": "2024-04-12T06:15:26.612648700Z"
    }
   },
   "id": "fc32234a4f082af5"
  },
  {
   "cell_type": "markdown",
   "source": [
    "阈值-代码实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "911e1aa0458a87"
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预测得分： [99835.04601158]\n",
      "预测结果： [False]\n"
     ]
    }
   ],
   "source": [
    "sgd_classifier = SGDClassifier(random_state=42,max_iter=7)   # 训练模型\n",
    "sgd_classifier.fit(x_train, y_train_5)   # 训练模型\n",
    "pre_score = sgd_classifier.decision_function([x.iloc[3500]])\n",
    "print(\"预测得分：\",pre_score)   # 输出预测得分\n",
    "pre_score = (pre_score > 100000)   # 阈值设置为100000\n",
    "print(\"预测结果：\",pre_score)   # 输出预测结果"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:15:27.399047Z",
     "start_time": "2024-04-12T06:15:26.658302800Z"
    }
   },
   "id": "3180ebfc8f6cf8dc"
  },
  {
   "cell_type": "markdown",
   "source": [
    "阈值曲线图"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "3b3abc3cd6624250"
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000,)\n",
      "(60000,)\n",
      "(60000,)\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sgd_classifier = SGDClassifier(random_state=42,max_iter=7)   # 训练模型\n",
    "sgd_classifier.fit(x_train, y_train_5)   # 训练模型\n",
    "test_pre_scores = sgd_classifier.decision_function(x_train)\n",
    "from sklearn.metrics import precision_recall_curve   # 引入评价指标包\n",
    "precision, recall, thresholds = precision_recall_curve(y_train_5, test_pre_scores)\n",
    "print(thresholds.shape)     # 阈值由于一刀切成两个，所有shape会比实际准确率，召回率少一个\n",
    "print(precision[:-1].shape)\n",
    "print(recall[:-1].shape)\n",
    "plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题\n",
    "plt.plot(thresholds, precision[:-1], label=\"precision\", color=\"blue\", linestyle=\":\") # 绘制阈值-精确率曲线图\n",
    "plt.plot(thresholds, recall[:-1], label=\"recall\", color=\"red\", linestyle=\":\")   # 绘制阈值-召回率曲线图\n",
    "plt.xlabel(\"threshold\")   # 设置x轴标签-梯度\n",
    "plt.title(\"threshold_precision-recall_curve\")   # 设置标题\n",
    "plt.legend()   # 显示图例\n",
    "plt.show()   # 显示图"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:22:18.427735400Z",
     "start_time": "2024-04-12T06:22:17.095859Z"
    }
   },
   "id": "5b39ed886c008e7b"
  },
  {
   "cell_type": "markdown",
   "source": [
    "ROC曲线-代码实现"
   ],
   "metadata": {
    "collapsed": false
   },
   "id": "c20e94414a85729d"
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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x7kDvpVKpZRIPn78GHXq1Mnz2jJlykhJ2oMHDzBr1iyda5vryJEjmDVrVp5ya2trqFSqfOMyNCZEKL7NXa9cuYLq1asDADw9PbF//374+Pjk+YUgItKXTCbTq+vKWJYtW4YGDRpgwoQJ0ngcZ2dndOzYUdq78Wnx8fG4efMm+vTpAycnJ3Tt2hUbN27MUw8AYmNj84zRKV++PP766y+kpqZKLRwHDx5Es2bNIJfLodFoChy7u7s7OnTogP/973/w8vKSEhYvLy/8/PPP+PTTT6W6R48elfafzOXq6qrTcnTp0iV8+OGHuHTp0gt7C7y8vBAZGYmMjAyp5ebo0aNwcnIq0DHyS0aepXz58qhVqxauXLmCcuXKAchp3Xr6/eVn9uzZCAoKkgZj57pw4QJ8fX3zzFADcpLEsmXLFji24sRB1cUgOzsbU6ZMga+vLzZs2CCV+/r6MhkiIrOjVqulxKNs2bJYu3YtFixYgK1bt0p1IiMjcezYMWzbtk0qy87OxvDhwzFnzhzUrFkTQM4aPidOnMCXX36pM1blwIED+Y6Reeutt6DVahEaGopDhw7h66+/lpIST09PxMTEID09Xdoe6d69e9Jx80uW+vfvjwULFuCdd96Ryrp164bY2FiEhoZi7969UjfSf9WvXx93796VHp89exYpKSlQqVQ4evQolEollEqlNIbn6fO3b98ejx8/RqdOnbBz507873//wz///PPCY+hr8ODB+P333wEA169fh4uLi7Ru1LJly3RmCAI546N2796NNWvW5El8ntVdBuQMTvfz83upWIuMMGNKpVIAEFdu3iuyY169elU0adJEABAAxLBhw4rs2ERk3tLT08X58+dFenq6sUMpsL1794r69esLGxsbsXr1apGWliaEEGLWrFnCxsZGTJkyRdy6dUsIIcStW7dEv379xIABA8TYsWNFr169xM8//5znmFevXhXdunUTDRo0ED169BCjRo0Sv//++3NjqFmzpnBzcxNff/21VP7PP/+IypUrizp16ojjx4+L8uXLi5kzZ4rDhw+LmjVrivr164uTJ0/qHEuj0YiwsLA851i/fr2oUqWK8PDwEAsXLsw3jl9//VV06NBBeqxUKkVAQIDw9vYWP/zwg2jXrp1o3769OHXqlGjatKnw9vYWBw4ckOr/8ccfonbt2qJs2bJiwoQJzz3Gy/4f0Wg0YsyYMeKzzz4TH3zwgfjnn3+k5zp37izmzZsnhBDi0KFDYsGCBWLKlClCpVLle6w33nhDZGZm5il/+PChcHd3F1lZWfm+7nn/33Pv30qlUp+3ly+ZEC8xd7KEU6lUcHJywpWb9/CKt8dLHUsIgeXLl2PYsGFISUmBk5MTlixZkmeFVSIifWVkZODGjRuoWrWqzoBXKhmEEGjevDl2797N/SkBbNy4ERcvXsSkSZPyff55/99z799KpRKOjo5FEg+7zPDy0+6Tk5PRrVs39O3bFykpKQgODsbp06eZDBERkUQmk2H+/PmIjIw0dihGp9VqsXPnTnzyySfGDkXChKgIxMTEYOPGjbCwsMDMmTOxd+9eaalyIiKiXI0aNYK/v780PsccqdVqLF26FNOmTTOpls6SMzWhOL1kE1Hbtm0xa9YsvP7662jYsGHRxERERKVSSEhIvmsFmYvs7Gz069evUOtJGQJbiPRw4cIFtG7dWmctjHHjxjEZIiKiArG3tzd2CEZja2trcskQwIQIQMHXIRJCYNGiRQgICMCff/75zMW3iIiIqGQxvRTNRCUmJqJfv37Yvn07gJwmz0WLFhk5KiIyR2Y8OZjMiKH/n7OFCC/eyyw6Ohr16tXD9u3bYWVlhfnz5yM6OhpeXl6GCZCICJAWdk1LSzNyJETFL/f/uaEWNGYL0Qv8/PPP0oqkdevWxerVq01nVU0iMisKhQLOzs5ITEwEkLOPFDeIptJGCIG0tDQkJibC2dkZCkXh9s3TFxMiPH+SWfv27eHn54fWrVtj1qxZJjVFkIjMT+7eUrlJEVFp5ezsLP1/NwSTS4j27t2LxYsXw8PDA5aWlpgzZ84zR6M/fPgQw4YNg5ubGxISEjB9+nTUqFHjpc6v1Wqxdu1adO/eHRYWFrCxscHhw4e5qigRmQSZTAYvLy94eHggOzvb2OEQFQtLS0uDtQzlMqmE6NSpUwgNDcXZs2fh5uaG4cOHY8yYMYiIiMhTVwiBjh07Ijw8HIMGDcKJEyfwxhtv4OzZs3BwcCjciZ80Od+5cwe9e/fG7t27cePGDWk5cSZDRGRqFAqFwW8YRKWZSQ2qnjBhAtq0aQM3NzcAQGhoKCIjIxEXF5en7saNG3H06FH06tULABAQEABbW1vMnz9fr3Nv3rwZ9erVk/aY8fT01PdtEBERUQljMgmRSqXCzp07ERAQIJX5+/tDCIGNGzfmqb9x40b4+vrqtN4EBgZi/fr1hT73+E9G4e2330ZycjIaNGiAEydOYODAgfq9ESIiIipxTCYhio2NhVqthqurq1RmY2MDR0dHxMbG5ql/9OhRnboA4OHhgQsXLiAzM7NQ516/ZhVkMhnGjh2Lw4cPw9fXV783QURERCWSyYwhyp0x4eLiolPu4OCApKSkfOs/3ZqUW1er1SI5OTnfNYIyMzN1kiWlUgkA8PDwxLJlSxEcHIyMjAxkZGS89PshIiKi4qFSqQAU7eKNJpMQ5a6l8d8BzBqNJt9FmWQyWb51gWcv4jRz5kx89tlnecoTE++hY8eOesVNRERExvHgwQM4OTkVybFMJiHKbdHJbbXJlZKSAnd393zr51dXoVDkaWXK9emnn2L06NHS40ePHqFy5cr4559/iuwHSvpRqVSoWLEibt68CUdHR2OHY9Z4LUwLr4fp4LUwHUqlEpUqVXrm/V4fJpMQ1apVC5aWljqLjaWlpUGlUqFx48Z56tevXx83b97UKUtISEBgYCDk8vyHRllbW8Pa2jpPuZOTE/9zmwhHR0deCxPBa2FaeD1MB6+F6XjW/V6vYxXZkV6Si4sL2rdvj8OHD0tlZ86cgZWVVb7dWWFhYTh16pTOmKDTp0/j3XffNUi8REREVHqYTEIEAJMmTcKePXukDd2WL1+OESNGwNvbG7t370bDhg1x7949AEDHjh1Rt25daff5o0ePIjMzE4MHDzZa/ERERFQymUyXGQA0bNgQCxcuRP/+/eHm5gYXFxdMnz4dQM54n7i4OKlFSKFQYOvWrRg9ejQOHz6Mu3fvYs+ePbCzsyvw+aytrTF16tR8u9HIsHgtTAevhWnh9TAdvBamoziuhUwU5Zw1IiIiohLIpLrMiIiIiIyBCRERERGZPSZEREREZPZMalB1cdi7dy8WL14MDw8PWFpaYs6cObCwyP9tP3z4EMOGDYObmxsSEhIwffp01KhRw8ARl26FuR5z5sxBZGQkUlNT0b59e8yfPz/P/nWkv8Jci6cNGDAAarUaUVFRxR+kmdDnWty6dQuRkZFwc3NDzZo10alTJwNFW7oV5lrs2LEDW7ZsQYUKFXDr1i2EhITg7bffNnDEpVtGRgaWLFmCtWvX6izLk5/4+HiMHTsW5cuXx/379zF37lyUK1eu4CcTpdjJkyeFp6enuH//vhBCiGHDhomRI0fmW1er1YpmzZqJJUuWCCGEOH78uKhUqZJQqVQGi7e0K8z1WLZsmejSpYtYs2aNGDdunLCwsBCvvfaaIcMt1QpzLZ62f/9+IZPJRO/evYs5QvOhz7X4448/ROPGjcW1a9cMEaLZKMy1uHDhgmjYsKFQq9VCCCHUarWoW7euiImJMVi8pV12drb44YcfRO3atUXlypWfWzc1NVX4+PiIHTt2CCGE2LRpk871KYhSnRC1b99e9OzZU3p86NAhoVAoxI0bN/LU3bBhg7C0tBRpaWlSWc2aNcX06dMNEapZKMz1mDZtms7jGTNmCAC8ARSRwlyLXJmZmaJLly4iKCiICVERKuy1iI2NFR4eHuLs2bMGitB8FOZazJs3T7z55ps6Zd27dxdz584t7jDNzrhx416YEM2ePVtUqFBBeqxWq4WdnZ1YsWJFgc9TascQqVQq7Ny5EwEBAVKZv78/hBDYuHFjnvobN26Er6+vzoaxgYGBWL9+vUHiLe0Kez0GDhyo8zh3tfLk5OTiDdQMFPZa5Jo9ezZGjBjBNViKUGGvhUajQa9evTBy5EjUqVPHkKGWeoW9Fm5ubtizZw+OHj0KAMjKysLx48cRHBxssJjNhY2NzQvrbNy4UefaKRQK1K9fv1D38FKbEMXGxkKtVuuMObGxsYGjoyNiY2Pz1D969Gie8SkeHh64cOGCzvYgpJ/CXo/y5cvrPFar1bC3t0fdunWLPdbSrrDXAgCuXLmCO3fuoFWrVgaK0jwU9lps3rwZ586dg5OTE3r27Ik6depg6tSp0Gq1hgy7VCrstXj33XdRvXp1hISEYMeOHRgyZAjGjBmDRo0aGTJsQs4HhePHj+d7D3/W37T8lNqEKHeT2P/uhOvg4ICkpKR86+dXV6vVslWiCBT2evzXrl27MHTo0AJ9UqDn0+daTJ48GTNmzCj22MxNYa/F5s2bUa5cOTRp0gSrV6/GF198genTp+Orr74ySLylWWGvha2tLXbs2IHy5cujXbt2cHJywqBBgwwSK+lKTk6GRqPR+/6Sq9QmRDKZDAB0usCAnEzS0tIy3/r51QWQb30qnMJej6elpqZi69atGD9+fLHFZ04Key1WrFiBDh06cIZfMSjstbh48SICAwMRGBgIAOjSpQuaNm2KuXPnFn+wpZw+f6OSk5PRoEEDBAcH4+uvv2ZiaiQvc395WqlNiLy8vAAASqVSpzwlJQXu7u751s+vrkKhyJN1UuEV9no8bdKkSYiIiICTk1OxxWdOCnMtHjx4gOjoaISFhRksPnNS2N+LlJQU2Nvb65S9/vrrSE5OLtQnYcqrsNfi3r176Nq1K+bNm4edO3eiU6dOGD9+PPbs2WOQeOlfrq6usLKy0uv+8rRSmxDVqlULlpaWUjMoAKSlpUGlUqFx48Z56tevX1+nLgAkJCQgMDAQcnmp/TEZTGGvR661a9eifv36aNKkiSHCNAuFuRbbtm3DunXrIJPJpK99+/Zh+fLlkMlkiIuLM3D0pUthfy+8vb3zdOF7enpCoVDwA8NLKuy1WLx4MXx9feHp6Qlra2ts2LAB/v7+WLp0qSHDJuS0ENWrVy/fe/jz7i//VWrv9C4uLmjfvr3OQk5nzpyBlZWVNGPpaWFhYTh16pTOAOrTp0/j3XffNUi8pV1hrwcA7Nu3D9euXUOfPn2ksv/+h6fCK8y16NixI2JjY3W+AgMDpfL/Dn6nwins70WHDh1w7NgxZGdnS2XJyclo0aIFu/ZfUmGvhVKp1JlxaW1tjX79+nGAu5GEhYXpXDu1Wo0LFy4U7h6ux5IAJUZMTIyoUKGCSE1NFUII8dFHH4kxY8YIIYTYtWuXCAwMFAkJCUKInDULAgMDxaZNm4QQQhw5ckRUrVpVpKSkGCf4Uqgw1yMmJkYEBweL6OhoER0dLX777TexdOnSAi0eSC9WmGvxXy1btuQ6REWoMNciJSVFvPLKK+KHH34QQuT83QoICBD79+83TvClTGGuxZEjR4S7u7t4+PCh9PoPP/xQ/PrrrwaPu7SbMGGCzhpDQgixfPly0aJFC5GRkSGEEEKlUomKFSuK48ePCyGEWL9+vWjSpInQaDQFPk+p3rqjYcOGWLhwIfr37w83Nze4uLhg+vTpAIBHjx4hLi5OahFSKBTYunUrRo8ejcOHD+Pu3bvYs2cP7OzsjPkWSpWCXo8rV64gJCQEDx8+xP79+3WO8bx1cqjgCvO7QcWrMNfCzs4Ou3btwujRo3Hjxg0kJSVh0qRJaNGihTHfQqlRmGvRuHFjLFy4EL1790aTJk2g1WrRokULdOjQwZhvodTZtGkTtm7dirt372L+/PkIDQ2Fh4cHkpKSEBcXB7VaDWtrazg4OGDHjh2YMmUKqlSpggcPHmD79u2FGvIiE0KIYnwvRERERCav1I4hIiIiIiooJkRERERk9pgQERERkdljQkRERERmjwkRERERmT0mRERERGT2mBARERGR2WNCRERERGaPCRGRmYuLi8PEiRPh5eVV6jZrvXnzJtzd3bFw4cIX1o2JiYGzszN++eUXA0RGRKaGCRFRCfPHH39g4MCBkMlksLW1RYcOHaSvVq1awcHBAc7OzgU+3sWLF7Fv3z4kJCQUX9DI2XzRxcUFMplM+rK1tUWlSpXQvXt3HD9+vMjPaWFhAWdn5wJtwWNlZQVnZ2fY2toWeRz/lZSUhKVLl6J69eqQyWTw8vJC69atERQUhCpVqqBr1644cuRIscdBRE8pqs3XiMiw3Nzc8mx4KIQQcXFxws/Pr1DHmjhxogAgbty4UUTR5e/y5csCgKhVq5Y4dOiQOHTokJg4caKwtLQUVlZWYufOncV6/lxKpVLMnTvXIOd6noiICAFAfP/991LZqVOnhLu7u7C2ttZ701ZTeX9EJQlbiIhKqGe1elSuXBkTJ04s1LEsLAyzz7OPjw8AwMXFBUFBQQgKCsLnn3+OqVOnIisrC2PGjDFIHLNmzcLjx48Ncq7nya8lz8/PD5MmTUJmZiZmzJih13FN5f0RlSRMiIhKoW7duhk7hHw9a+fpLl26AAAuXbpU7DFs3LgRs2bNKvbzvIwqVaoAgF7dmCXh/RGZIiZERKXIgwcPsHr1ap2yuLg4vPvuu3j99ddRrVo1NG/eHMeOHXvhsY4ePYrWrVujefPmcHR0hEwmw61bt6Tn7969i379+uGNN95A+fLl0aVLF9y5c0evuG/cuAEAeOWVV6QyrVaLefPm4fXXX0dgYCB8fX0xe/ZsaLVanTqjR49GixYtUKtWLchkMgwYMAAAkJKSgmXLluHVV1/FZ599BgDYt28fIiIiIIRAVFQUWrVqhe+++w7JyclYsGAB6tWrh6ioKADAkCFDpLFOZcuWxdatWwEAt2/flsb+DB06VIpl9erVaNu2LQIDA1G1alUsXbpUr58FAPz+++8AgFatWuV5bt++fWjVqhVee+01eHt747333sP9+/ef+/4AQAiB+fPnIyQkBHXr1kXt2rWl90RE4BgiopKqcuXKecYQzZs3T6xcuVKnrFatWiI8PFwIIYRKpRJeXl6iTp06OnWmTp2qM4ZIq9WKChUqiIsXLwohhEhKShI1atQQN2/eFEII8fDhQ1GzZk1pjMvt27dF+fLlRaNGjYRWq31u3ABE06ZNpcdnz54Vr7zyilAoFGLr1q1Seb9+/USXLl1Edna2EEKILVu2CJlMJvr37y/VWbJkiXj//felx9988430/JUrV8ScOXMEADF16lSpzo0bN/KUnTlzRowePVoAED/++KNUPnv2bAFAzJkzR+c97N+/X/Tp00d6vGDBAtG5c2eRkZEhhBBi2rRpAoD49ddfn/uz+PHHH3XGECUkJIhx48YJACI4OFgkJyfr1L9x44awtbUVP/zwgxBCiJiYGAFADBky5LnvTwghRo0aJQYPHiw0Go0QQog+ffoIhUIhTp48+dwYicwFEyKiEqpy5crCyspKtGzZUrRs2VIEBgYKhUKhkxCpVCohl8tFRESEVNa1a1dhZWWlc6z/JkSJiYkCgDhw4IBU58cffxS3bt0SQuTc8Lt166ZzjI8//lgAEDt27Hhu3ACEl5eXeP/990XLli1FQECACAsLE6dOnZLqHDhwQAAQJ06c0Hlt165ddeIaPHiwCAkJkW7yWq1WfP7551L93EHcL0qIhBBi586deRKijIwM4eHhIdq0aaNTd8iQIeLSpUtCCCEeP34sHBwcxPnz56XnHz9+LACIV1999bk/i9yE6JVXXhG1atUSAISbm5vYuXOn9J6etm3bNgFAxMbGSmVly5YVISEhz31/169fF1ZWVkKlUkllZ86cEQBEjx49nhsjkbkwzEhKIioW7u7u+PPPP6XHp0+fxunTp6XHDg4O+Ouvv1C/fn1otVr88ccfuHbtGrKysp57XDc3NwQFBaFt27YYNWoURo0ahT59+kjP79y5E7du3dLp0nn06BEqV66M27dvvzDuatWqYe3atc98fs2aNQCAGjVq6JT37NkTmzdvxi+//ILmzZvjrbfeQseOHdG0aVPMmDEDb7zxhs6AcktLyxfG8ry61tbWGDx4MKZNm4azZ8+ibt26UCqVuH//vhTboUOH8PjxY3z44YeQyWTSaytXrozU1NQCnbt///4YO3YsWrVqhQMHDuD69et444038tQLCQnB/v374e/vj7S0NGzZsgUajeaF13P37t0AgI4dO0plarUalStXhlKpLFCMRKUdEyKiUsTPzw9+fn46ZYGBgYiMjMS+ffvw/vvvo3bt2jpJU35kMhl27tyJqVOnYs6cOZg/fz4mTpyI8ePHQyaTITExESEhIfj++++L5X3kLhCZmpqqM5sud7Dxo0ePAADt27fHrl27MHLkSISEhODVV1/FDz/8AF9f3yKL5aOPPsKsWbMwf/58LF26FFFRUejfv7/0fGJiIoCcJK5ChQp6n0cul2P16tWoX78+Ro4ciaCgINSvX1+njqWlJWrUqIERI0bgwYMHGDBgAMqWLQshxHOPnZiYCLlcjj179kChUOgdI1FpxkHVRKWYSqXCq6++ijNnzmDz5s0IDQ2FtbV1gV7r4OCAefPm4fLlywgJCcGECRMwb948AICTkxN27tyJlJQUnddotVqcO3fupeP29vYGAFy5ckWn3NHREYDu4OvXXnsNJ0+exPLly3Hp0iW0bt26wC0zBeHh4YGePXti9erVuHfvHvbu3avTeuPk5AQA2LRpU57XnjlzplDnqlixIr7//ntkZGSgW7dueabOnzp1CnXq1EG9evWwatWqfAdd58fJyQkZGRnYvn37S8dIVFoxISIqoTQazQtbBpYvX44TJ05gzJgxhWoZSEhIQGRkJICcrp+ff/4ZQUFBUvdc69at8c8//+Ddd9+VZp5lZGRgzJgxz13/JneGmFqtfu75u3btCgB5Zsxdu3YNFhYWeO+99wAA06ZNg1qthlwuR3h4ONasWYOEhARcvHjxmcd+uluroEaOHCklKW+++abOMZo2bQpra2t8+umnWLFihfQeY2NjsWDBguceV6PRAIDOzLl33nkHAwcOxOXLl9GnTx+dazx9+nSdmXQFfX+tW7cGAAwYMAC//fabVL5nzx6sXLnyuTESmQsmREQl0MOHD3H//n0kJydL3Uf5sbe3BwBpG4h//vkHp06dAgCkpaXh6tWrACCN+3l6/M/06dNx4sQJADk3bo1Gg5YtWwIAPvnkE3h5eWHHjh2oWLEiKlasCHd3d9y+fRtBQUHPjCe3xefGjRvIzMx8Zr0333wTnTp1wg8//IADBw4AANLT0/H1119j4sSJqFatGoCcxG3YsGHSGJrMzEx4eHigVq1aACAtA3Dv3j3p2Lnbh+Q+99dffz2zbq66devijTfewJkzZxAeHq7znIuLCyZOnIi0tDT07t0bDg4OqFixIl599VUMGzbsme8RgJS4/bclbP78+fD19cXPP/+Mvn37SuN87O3t8fDhQ1y+fFmKPTk5GWlpaUhLS8OdO3fyfX916tRBv379cP/+fbz11ltwdnZG+fLl0a1bN4wYMeK5MRKZDSMP6iaiQvrkk0+Eu7u7ACAACGdnZ52p6E/LyMgQb7/9tnB0dBTvv/++WLBggfjiiy+Es7OzGD9+vLh7967o16+fkMvlAoBwcXER3377rbh7964AIORyuahfv7549dVXxdSpU3VmPl2/fl106dJF2NnZCWdnZ/Hhhx+KtLS0Z8bds2dP4ezsLMVdoUIFMXHixGfWT09PF+PGjRMVK1YUzZo1E23atBHLli3TqfPBBx9IM7OCg4PFG2+8Ic3A2rJli/Dw8BAAhEKhEP369ZNeN23aNOHi4iI+/PBDERcXJxYvXiycnJwEAGFjYyMmT56cJ57ffvtNfPLJJ8+M93//+5/w8fERlpaWwt/fX+zevfuZdU+fPi0CAgKETCaTfh4NGjQQf//9t1QnNjZWWFtbCwDC1tZWTJw4UVy9elUEBgaK8uXLiwEDBoiffvpJvPvuu8LLy0ssXrxYZGZm5vv+hBBCrVaLzz77THh7ewsrKyvRvHnzPLP4iMyZTIgXtLkTERERlXLsMiMiIiKzx4SIiIiIzB4TIiIiIjJ7TIiIiIjI7DEhIiIiIrPHhIiIiIjMHhMiIiIiMntMiIiIiMjsMSEiIiIis8eEiIiIiMweEyIiIiIye0yIiIiIyOwxISIiIiKz938uud3bDhoPogAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9698551430346448\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics import roc_auc_score, roc_curve   # 引入评价指标包\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, test_pre_scores)   # 输出ROC曲线的fpr,tpr,阈值\n",
    "plt.plot(fpr, tpr, label=\"ROC curve (area = %0.2f)\" % roc_auc_score(y_train_5, test_pre_scores))   # 绘制ROC曲线\n",
    "plt.plot([0, 1], [0, 1], 'k--')   # 绘制对角线\n",
    "plt.xlim([0.0, 1.0])   # 设置x轴范围\n",
    "plt.ylim([0.0, 1.05])   # 设置y轴范围    \n",
    "plt.xlabel('False Positive Rate')   # 设置x轴标签-真正例率\n",
    "plt.ylabel('True Positive Rate')   # 设置y轴标签-真负例率\n",
    "plt.title('ROC curve')   # 设置标题\n",
    "plt.legend(loc=\"lower right\")   # 显示图例\n",
    "plt.show()   # 显示图\n",
    "print(roc_auc_score(y_train_5, test_pre_scores))   # 输出ROC曲线的AUC值(面积得分)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2024-04-12T06:42:52.683204900Z",
     "start_time": "2024-04-12T06:42:52.561449800Z"
    }
   },
   "id": "5f0b0e4c445b3790"
  },
  {
   "cell_type": "markdown",
   "source": [],
   "metadata": {
    "collapsed": false
   },
   "id": "f4e8b0b8b5eb7a12"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
